import axios from 'axios';

interface IpInfo {
  ip: string;
  country: string;
  regionNameName: string;
  city: string;
  lat: number;
  lon: number;
  isp: string;
  timezone: string;
}

export function useIpApi() {
  /**
   * 获取IP信息
   * @param ip 可选的IP地址，如果不提供则获取当前用户的IP
   * @returns IP信息对象
   */
  const getIpInfo = async (ip?: string): Promise<IpInfo> => {
    try {
      // 构建API URL，如果提供了IP则使用它
      const baseUrl = 'http://ip-api.com/json';
      const url = ip ? `${baseUrl}/${ip}` : baseUrl;
      
      const response = await axios.get(url);
      const data = response.data;
      
      return {
        ip: data.query,
        country: data.country,
        regionNameName: data.regionNameName,
        city: data.city,
        lat: data.lat,
        lon: data.lon,
        isp: data.isp,
        timezone: data.timezone
      };
    } catch (error) {
      console.error('获取IP信息失败:', error);
      // 返回默认值，避免应用崩溃
      return {
        ip: '未知',
        country: '未知',
        regionNameName: '未知',
        city: '未知',
        lat: 0,
        lon: 0,
        isp: '未知',
        timezone: '未知'
      };
    }
  };

  return {
    getIpInfo
  };
}